package com.groot.medical.dao;

import java.util.List;

import com.groot.medical.entity.AdministrativeArea;

public interface AdministrativeAreaDao {
	/**
	 * 获取行政区域记录总数
	 * @return
	 */
	int getAllAreaCount();
	/**
	 * 分页查询行政区域记录
	 * @param startIndex
	 * @param pageSize
	 * @return
	 */
	List<AdministrativeArea> findAreaByPage(int startIndex, int pageSize);
	/**
	 * 查询所有行政区域信息
	 * @return
	 */
	List<AdministrativeArea> findAllAreaInfo();
	/**
	 * 添加行政区域信息
	 * @param area
	 * @param areacode 
	 * @return
	 */
	int addAreaInfo(AdministrativeArea area);
	/**
	 * 查询行政区域等级通过上一级行政区域
	 * @param pid
	 * @return
	 */
	AdministrativeArea findLevelByPid(int pid);
	/**
	 * 自动生成行政区域编号
	 * @param area
	 * @param parea 
	 * @return
	 */
	String autoCreateAreaCode(AdministrativeArea area, AdministrativeArea parea);
	/**
	 * 查询镇县两级所有行政区域信息
	 * @return
	 */
	List<AdministrativeArea> findOtherAreaInfo();
	/**
	 * 查询县级行政区域所有信息
	 * @return
	 */
	List<AdministrativeArea> findContryAreaInfo();
	/**
	 * 根据县的区域code查询乡镇一级的刑侦区域信息
	 * @param areacode 
	 * @return
	 */
	List<AdministrativeArea> findTownAreaInfo(String areacode);
	/**
	 * 根据乡镇的区域code查询村一级的刑侦区域信息
	 * @param areacode
	 * @return
	 */
	List<AdministrativeArea> findVillageAreaInfo(String areacode);
	/**
	 * 根据村的区域code查询组一级的刑侦区域信息
	 * @param areacode
	 * @return
	 */
	List<AdministrativeArea> findGroupAreaInfo(String areacode);
	/**
	 * 根据地区编号查询编号名称集合
	 * @param townCode
	 * @param contryCode
	 * @param villageCode
	 * @param groupCode
	 */
	List<String> findAreaNameBycode(String townCode, String contryCode, String villageCode, String groupCode);
	/**
	 * 查询镇级所有行政区域
	 * @return
	 */
	List<AdministrativeArea> findAllTownInfo();
	/**
	 * 查询县级和镇级的信息
	 * @return
	 */
	List<AdministrativeArea> findContryAndTown();
	/**
	 * 查询行政区域信息根据Id
	 * @param id
	 * @return
	 */
	AdministrativeArea findAreaInfoById(String id);
	/**
	 * 修改行政区域信息
	 * @param area
	 */
	void editArea(AdministrativeArea area);

}
